package gui;
import ge.escola.Disciplina;
import ge.escola.Sala;
import ge.util.Validadores;

import java.awt.Canvas;
import java.awt.Color;

import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.BorderFactory;
import javax.swing.JButton;

import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JToolBar;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class AlteraDisciplina extends javax.swing.JPanel {
	private JButton buttonOk;
	private JTextField caixaCarga;
	private JLabel jLabel4;
	private JLabel jLabel5;
	private JLabel checagemCarga;
	private JLabel checagemSala;
	private JLabel checagemNome;
	private JLabel caixaCodigoDisciplina;
	private JTextField caixaCodigoSala;
	private JLabel jLabel3;
	private JLabel jLabel2;
	private JLabel jLabel1;
	private JTextField caixaNome;

	private Disciplina disciplina;
	
	private Sala sala;
	private String nomeDisciplina;
	private int codigoSala,cargaHoraria;
	private boolean flag = true;
	Color verde = new Color(0,150,0);
	
	/**
	* Auto-generated main method to display this 
	* JPanel inside a new JFrame.
	*/
	
	public AlteraDisciplina() {
		super();
		initGUI();
		disciplina = SelecionaDisciplina.disciplina;
		caixaNome.setText(disciplina.getNome());
		caixaCodigoSala.setText(String.valueOf(disciplina.getSala()));
		caixaCarga.setText(String.valueOf(disciplina.getCargaHoraria()));
		caixaCodigoDisciplina.setText(disciplina.getCodigo());
		
	}
	
	private void initGUI() {
		try {
			setPreferredSize(new Dimension(400, 300));
			this.setSize(800, 600);
			this.setLayout(null);
			this.setBackground(new java.awt.Color(204,204,255));
			{
				caixaNome = new JTextField();
				this.add(caixaNome);
				caixaNome.setBounds(248, 150, 442, 34);
				caixaNome.setFont(new java.awt.Font("Arial",0,18));
				caixaNome.addKeyListener(new KeyAdapter() {
					public void keyReleased(KeyEvent evt) {
						caixaNomeKeyReleased(evt);
					}
				});
			}
			{
				jLabel1 = new JLabel();
				this.add(jLabel1);
				jLabel1.setText("Nome da disciplina");
				jLabel1.setBounds(44, 149, 186, 34);
				jLabel1.setFont(new java.awt.Font("Arial",0,22));
				jLabel1.setForeground(new java.awt.Color(0,102,102));
			}
			{
				jLabel2 = new JLabel();
				this.add(jLabel2);
				jLabel2.setText("Gerenciar disciplina");
				jLabel2.setBounds(237, 24, 309, 59);
				jLabel2.setForeground(new java.awt.Color(0,102,102));
				jLabel2.setFont(new java.awt.Font("Arial",0,36));
			}
			{
				jLabel3 = new JLabel();
				this.add(jLabel3);
				jLabel3.setText("Codigo da sala");
				jLabel3.setFont(new java.awt.Font("Arial",0,22));
				jLabel3.setForeground(new java.awt.Color(0,102,102));
				jLabel3.setBounds(78, 208, 152, 34);
			}
			{
				caixaCodigoSala = new JTextField();
				this.add(caixaCodigoSala);
				caixaCodigoSala.setFont(new java.awt.Font("Arial",0,18));
				caixaCodigoSala.setBounds(248, 210, 199, 34);
				caixaCodigoSala.addKeyListener(new KeyAdapter() {
					public void keyReleased(KeyEvent evt) {
						caixaCodigoSalaKeyReleased(evt);
					}
				});
			}
			{
				jLabel4 = new JLabel();
				this.add(jLabel4);
				jLabel4.setText("Carga horaria");
				jLabel4.setFont(new java.awt.Font("Arial",0,22));
				jLabel4.setForeground(new java.awt.Color(0,102,102));
				jLabel4.setBounds(97, 264, 133, 34);
			}
			{
				caixaCarga = new JTextField();
				this.add(caixaCarga);
				caixaCarga.setFont(new java.awt.Font("Arial",0,18));
				caixaCarga.setBounds(248, 267, 199, 34);
				caixaCarga.addKeyListener(new KeyAdapter() {
					public void keyReleased(KeyEvent evt) {
						caixaCargaKeyReleased(evt);
					}
				});
			}
			{
				buttonOk = new JButton();
				this.add(buttonOk);
				buttonOk.setText("OK");
				buttonOk.setBackground(new java.awt.Color(255,255,255));
				buttonOk.setFont(new java.awt.Font("Arial",0,16));
				buttonOk.setBounds(634, 511, 96, 40);
				buttonOk.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent evt) {
						buttonOkMouseClicked(evt);
					}
				});
			}
			{
				jLabel5 = new JLabel();
				this.add(jLabel5);
				jLabel5.setText("Codigo da disciplina");
				jLabel5.setFont(new java.awt.Font("Arial",0,22));
				jLabel5.setForeground(new java.awt.Color(0,102,102));
				jLabel5.setBounds(30, 328, 200, 34);
			}
			{
				caixaCodigoDisciplina = new JLabel();
				this.add(caixaCodigoDisciplina);
				caixaCodigoDisciplina.setFont(new java.awt.Font("Arial",0,18));
				caixaCodigoDisciplina.setForeground(new java.awt.Color(0,102,102));
				caixaCodigoDisciplina.setBounds(248, 328, 199, 34);
				caixaCodigoDisciplina.setOpaque(true);
				caixaCodigoDisciplina.setBackground(new java.awt.Color(255,255,255));
				caixaCodigoDisciplina.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
			}
			{
				checagemNome = new JLabel();
				this.add(checagemNome);
				checagemNome.setFont(new java.awt.Font("Tahoma",0,14));
				checagemNome.setBounds(702, 159, 62, 19);
			}
			{
				checagemSala = new JLabel();
				this.add(checagemSala);
				checagemSala.setText("");
				checagemSala.setFont(new java.awt.Font("Tahoma",0,14));
				checagemSala.setBounds(459, 218, 65, 17);
			}
			{
				checagemCarga = new JLabel();
				this.add(checagemCarga);
				checagemCarga.setText("");
				checagemCarga.setFont(new java.awt.Font("Tahoma",0,14));
				checagemCarga.setBounds(459, 275, 65, 17);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void caixaNomeKeyReleased(KeyEvent evt) {
		nomeDisciplina = caixaNome.getText();
        if(nomeDisciplina.equals("")){
        	checagemNome.setText("");
            flag = false;
        }if(Validadores.validaNome(nomeDisciplina)){
        	checagemNome.setText("OK");
        	checagemNome.setForeground(verde);
        	flag = true;
        }else{
        	checagemNome.setForeground(Color.red);
        	flag = false;
        }
	}
	
	private void caixaCodigoSalaKeyReleased(KeyEvent evt) {
		String stringCodigoSala = caixaCodigoSala.getText();
    	Pattern padrao = Pattern.compile("[0-9]*");
        Matcher meta = padrao.matcher(stringCodigoSala);
    	if(stringCodigoSala.equals("")){
    		checagemSala.setText("");
    		flag = true;
    	}else if(meta.matches() && Integer.parseInt(stringCodigoSala)>0){
    		checagemSala.setForeground(verde);
    		checagemSala.setText("OK");
    		codigoSala = Integer.parseInt(stringCodigoSala);
    		flag = true;
    	}else{
    		checagemSala.setForeground(verde);
    		checagemSala.setText(stringCodigoSala);
    		flag = false;
    	}
	}
	
	private void caixaCargaKeyReleased(KeyEvent evt) {
		String stringCarga = caixaCarga.getText();
    	cargaHoraria = Integer.parseInt(stringCarga);
	}
	
	private void buttonHorarioMouseClicked(MouseEvent evt) {
		
	}
	
	private void buttonOkMouseClicked(MouseEvent evt) {
		if(flag == false){
			JOptionPane.showMessageDialog(null, "Algum dado invalido");
		}else{
			if(checaSala()){
				GerenciadorDeJanelas.todasDisciplinas.remove(disciplina);
				disciplina.setCargaHoraria(cargaHoraria);
				disciplina.setNome(nomeDisciplina);
				disciplina.setSala(sala);
				GerenciadorDeJanelas.todasDisciplinas.add(disciplina);
				
				String xml = GerenciadorDeJanelas.ARQUIVADOR.toXML(GerenciadorDeJanelas.todasDisciplinas);
    			GerenciadorDeJanelas.gravar(GerenciadorDeJanelas.arquivoDeDisciplinas,xml);
    			
    			GerenciadorDeJanelas.selecionaDisciplina = new SelecionaDisciplina();
    	        GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.selecionaDisciplina);
    	        GerenciadorDeJanelas.window.setVisible(true);
			}else{
				JOptionPane.showMessageDialog(null, "Sala nao existe. Cadastre uma sala depois.");
				GerenciadorDeJanelas.todasDisciplinas.remove(disciplina);
				disciplina.setCargaHoraria(cargaHoraria);
				disciplina.setNome(nomeDisciplina);
				GerenciadorDeJanelas.todasDisciplinas.add(disciplina);
				
				String xml = GerenciadorDeJanelas.ARQUIVADOR.toXML(GerenciadorDeJanelas.todasDisciplinas);
    			GerenciadorDeJanelas.gravar(GerenciadorDeJanelas.arquivoDeDisciplinas,xml);
    			
    			GerenciadorDeJanelas.selecionaDisciplina = new SelecionaDisciplina();
    	        GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.selecionaDisciplina);
    	        GerenciadorDeJanelas.window.setVisible(true);
			}
		}
	}
	
	private boolean checaSala(){
		for(Sala sala2:GerenciadorDeJanelas.todasSalas){
			if(sala2.getNumeroDeIdentificacao() == codigoSala){
				sala = sala2;
				return true;
			}
		}
		return false;
	}

}
